// app.js
App({

  globalData: {
    // 服务器域名或id
    serverHostLocation: "http://123.60.210.186", // 华为云服务器地址
    // serverHostLocation: "http://localhost", // 本地测试地址
    // 这里还可以加入其它需要的请求头，比如\'x-requested-with\': \'XMLHttpRequest\'表示ajax提交，微信的请求时不会带上这个的
    // 当设计用户的操作时，需要将这个header一同发送到服务器
    header: {
      Cookie: ''
    },
    // 用于存储用户的所有信息
    userInfo: null
    // message: "初始化..." // 这个好像没啥用了
  },

  onLaunch: function () {
    // 读取本地缓存
    var localSessionId = wx.getStorageSync('sessionId');
    console.log(localSessionId);
    if (localSessionId == null || localSessionId == "") {
      // 如果本地没有session信息，则请用户手动登录
      console.log("用户未登录");
    } else {
      // 如果用户有本地的session信息，则通过sessionId从服务器获取用户的缓存信息
      // 注意，获取的是服务器内存中的用户信息，并非数据库中的用户信息
      this.login();
    }
    // 将session信息放入header
    this.globalData.header.Cookie = 'JSESSIONID=' + localSessionId;
  },

  /**
   * 登录方法
   * 作者：郭
   */
  login: function () {
    console.log("准备登录...");
    wx.login({
      success: res => {
        console.log("获取用户登录凭证：");
        console.log(res);

        // 发送 res.code 到后台
        var header = getApp().globalData.header;
        wx.request({
          url: getApp().globalData.serverHostLocation + '/userinfos/login',
          method: 'POST',
          header: header, // 设置请求的 header
          data: res.code,
          success: function (res) {
            console.log("登录后响应的数据：");
            console.log(res);
            getApp().globalData.message = res.data.message;
            // 判断用户是否注册
            if (res.data.flag) {
              // 已注册
              // 保存用户信息
              getApp().globalData.userInfo = res.data.data;

              // 储存sessionID
              getApp().globalData.header.Cookie = 'JSESSIONID=' + res.data.sessionId;
              // TODO 后续还有其他操作，可以将sessionId放入小程序本地缓存中
              wx.setStorageSync("sessionId", res.data.sessionId);

              // 跳转到首页
              console.log("跳转到首页...");
              wx.redirectTo({
                url: "/pages/index/index"
              });
            } else {
              // 未注册，跳转到注册页面
              // console.log("未注册，跳转到注册页面");
              // wx.redirectTo({
              //     url: "/pages/index/index"
              // });
              console.log("用户未注册，请点击按钮进行注册");
            }
          }
        })
      }
    });
  },

  /**
   * 获取用户信息，注册
   * 这个函数只能用户点击才能运行wx.getUserProfile方法
   * 如果用户未注册则注册后在登录，如果用户已经注册，则登录
   * 
   * 作者：郭
   */
  getUserInfo: function () {
    console.log("准备注册...");
    wx.getUserProfile({ // 获取用户信息
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log("获取到用户信息：");
        console.log(res);
        var userinfo = res.userInfo;
        wx.login({ // 获取code
          success: res => {
            console.log("获取用户登录凭证：");
            console.log(res);
            // var code = res.code;
            wx.request({ // 发送code与用户信息到后台，完成注册
              url: getApp().globalData.serverHostLocation + '/userinfos/register?code=' + res.code,
              method: 'POST',
              data: userinfo,
              success: res => {
                console.log(res);
                if (res.data.flag) {
                  console.log("注册成功，执行登录方法...");
                  // 执行登录方法
                  getApp().login();
                  wx.showToast({
                    title: '登陆成功',
                  })
                } else {
                  console.log("注册失败，用户已存在...");
                  // 执行登录方法
                  getApp().login();
                  wx.showToast({
                    title: '注册成功',
                  })
                }
              }
            });
          }
        });
      }
    });
  },

  /**
   * 发送登出信息到服务器
   * 
   * 作者：郭
   */
  logout: function () {
    console.log("准备登出...");
    wx.request({
      url: getApp().globalData.serverHostLocation + "/userinfos/logout",
      method: "GET",
      header: getApp().globalData.header,
      success: res => {
        console.log("登出结果...");
        console.log(res);
        if (res.data.flag) {
          // 清除sessionId数据
          getApp().globalData.header.Cookie = null;
          wx.removeStorageSync("sessionId");
          wx.showToast({
            title: '退出成功',
          });
        } else {
          console.log("登出失败");
          wx.showToast({
            title: '退出失败',
          });
        }

      }
    });
  }


})